El diseño fundamental de un sistema computacional se define por la relación entre la Unidad de Procesamiento y la Memoria. La principal diferencia radica en si las instrucciones y los datos comparten una vía común o utilizan canales independientes.
1. Arquitectura von Neumann
Utilizada por sistemas generales como x86-64, este modelo presenta un espacio de memoria unificado. La CPU accede tanto al código como a los datos a través de un solo bus, lo que da lugar al cuello de botella de von Neumann: la latencia provocada cuando la CPU debe multiplexar el bus entre la obtención de instrucciones y el acceso a operandos.
2. Arquitectura Harvard
Común en procesadores especializados y ARMv8-A implementaciones de caché L1, este diseño utiliza almacenamiento de memoria y vías de señalización físicamente separadas. Esto permite la recuperación simultánea de un operando y un dato, aumentando significativamente el rendimiento.
Diagrama de flujo: Ciclo de recuperación de memoria en una arquitectura von Neumann que muestra el uso secuencial del bus.
3. Convergencia Estructural
Los sistemas HPC modernos suelen utilizar una arquitectura Harvard modificada. Se comportan como máquinas Harvard a nivel de caché L1 (caché de instrucciones y caché de datos separadas) para maximizar la velocidad, manteniendo un modelo von Neumann en la memoria principal para flexibilidad en programación.